Domain names facilitate human interaction within the electronic world. A domain name is a combination of unique and memorable alphanumeric characters employed to identify or address one or more computers. Conventionally, domain names are a component of Uniform Resource Locators (URLs) associated with navigating the World Wide Web (“web”) as well as a component of electronic mail (“email”) addresses for sending and receiving electronic correspondence. In a URL, the domain name is the unique name ending with a top-level name such as “com” (e.g., “www.example.com,” “example.com,” “example.org” . . . ). In an email address, the domain name follows the “@” symbol (e.g., “example.com” in “jjones@example.com”).
Electronic devices including computers and routers utilize Internet Protocol (IP) address rather than domain names for communication. IP addresses are unique numerical values that identify a specific location similar to the way a house address identifies a particular house on a street. In terms of format, the 32-bit values are often represented as doted decimal number to make it easy for humans to read including four octets separated by dots (e.g., 208.77.188.166). In addition to facilitating readability, the octets are used to help define classes of IP addresses for assignment to specific entities or purposes. Electronic devices employ such an addressing scheme to transmit data amongst one another across a network, for instance.
A domain name system or service (DNS) is employed to translate user entered domain names to computer comprehendible IP addresses. A DNS system is essentially a very large database system that maps domain names to IP addresses. Upon receipt of a domain name entered or designated by a user, an application such as a web browser can request the services of a DNS system. The DNS system acquires an IP address associated with a passed domain name and transmits it back to the requesting application. The IP address can subsequently be employed by the application to send or receive data. Overall, the DNS system provides a convenience to users by enabling use of memorable domain names rather than requiring utilization of forgettable IP addresses.
Accessing a DNS system for every electronic transmission is inefficient and over burdensome on the system itself. As a result, mappings between domain names and IP addresses are cached at various levels. For example, a client operating system or application and/or network host, among others, can save mapping information for later reference. By avoiding a DNS lookup, transactions are much faster especially considering the number of lookups that would otherwise be required.
Caching provides both favorable and unfavorable consequences. On one hand, caching expedites processing since once a mapping is retrieved an expensive acquisition transaction is not required. However, caching also reduces responsiveness to change. In some cases, domain name to IP address mappings change when a server fails or systems are scaled up or down, for instance. As a result, changes will not be available and systems will appear to stop working or work intermittently.
DNS protocol addresses this issue with a time to live (TTL) field or value. The TTL value, set by a domain publisher, for example, identifies an expiration time for a domain name/IP address mapping, ranging from seconds to weeks or longer. Upon expiration, the cached version is to be discarded, a DNS lookup performed, and the new mapping cached. The benefits of caching can therefore be balanced against responsiveness to change by selecting a reasonable TTL value.
Nevertheless, some Internet architecture components (e.g., intermediate DNS caches at Internet Service Providers, or client software) violate the DNS protocol by caching DNS records for periods beyond the specified expiration time. Occurrence of this misbehavior in practice makes DNS impractical to use for applications for which it was designed.